﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Configuration;
using Libreria.SIG.Negocio;
using Libreria.SIG.Modelo;
using System.Web.UI.HtmlControls;


public partial class Inventario : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        Session["CadenaDeConexion"] = ConfigurationManager.ConnectionStrings["SIG"].ConnectionString;
        ((Label)FormViewInventario.FindControl("LabelFechaInventario")).Text = DateTime.Now.ToShortDateString();
        ((TextBox)FormViewInventario.FindControl("CostoUnitarioTextBox")).Attributes.Add("onblur", string.Concat("document.getElementById('", ((TextBox)FormViewInventario.FindControl("CostoTotalTextBox")).ClientID, "').value = document.getElementById('", ((TextBox)FormViewInventario.FindControl("CantidadTextBox")).ClientID, "').value * document.getElementById('", ((TextBox)FormViewInventario.FindControl("CostoUnitarioTextBox")).ClientID, "').value"));
    }

    protected void LinkButtonNuevo_Click(object sender, EventArgs e)
    {
        ((Label)FormViewInventario.FindControl("LabelExis")).Visible = false;
        ((Label)FormViewInventario.FindControl("LabelExistencia")).Visible = false;
        ((Label)FormViewInventario.FindControl("LabelCtrlInventario")).Visible = false;
        ((Label)FormViewInventario.FindControl("LabelControlInventario")).Visible = false;
        ((Label)FormViewInventario.FindControl("LabelCostoUnitario")).Visible = false;
        ((Label)FormViewInventario.FindControl("LabelCostoTotal")).Visible = false;
        ((TextBox)FormViewInventario.FindControl("CostoUnitarioTextBox")).Visible = false;
        ((TextBox)FormViewInventario.FindControl("CostoTotalTextBox")).Visible = false;
        ((DropDownList)FormViewInventario.FindControl("DropDownListIngredientes")).Enabled = false;
        FormViewInventario.Visible = true;
    }

    protected void DropDownListTipoDeIngrediente_SelectedIndexChanged(object sender, EventArgs e)
    {
        ((HiddenField)FormViewInventario.FindControl("HiddenFieldTipoDeIngrediente")).Value = ((DropDownList)sender).SelectedValue;
        IngredienteNegocio ingredienteNegocio = new IngredienteNegocio();
        List<Libreria.SIG.Modelo.Ingrediente> ingredientes = ingredienteNegocio.consultarIngredientesPorTipo(Int32.Parse(((HiddenField)FormViewInventario.FindControl("HiddenFieldTipoDeIngrediente")).Value.ToString()), Session["CadenaDeConexion"].ToString());
        ((DropDownList)FormViewInventario.FindControl("DropDownListIngredientes")).Items.Clear();
        ((DropDownList)FormViewInventario.FindControl("DropDownListIngredientes")).AppendDataBoundItems = true;
        ((DropDownList)FormViewInventario.FindControl("DropDownListIngredientes")).Items.Add(new ListItem("-- Seleccionar ingrediente --", "0"));
        ((DropDownList)FormViewInventario.FindControl("DropDownListIngredientes")).DataSource = ingredientes;
        ((DropDownList)FormViewInventario.FindControl("DropDownListIngredientes")).DataBind();
        ((DropDownList)FormViewInventario.FindControl("DropDownListIngredientes")).Enabled = true;
        ((DropDownList)FormViewInventario.FindControl("DropDownListTiposMovimiento")).Enabled = false;
    }

    protected void DropDownListIngredientes_SelectedIndexChanged(object sender, EventArgs e)
    {
        ((Label)FormViewInventario.FindControl("LabelExis")).Visible = true;
        ((Label)FormViewInventario.FindControl("LabelExistencia")).Visible = true;
        ((HiddenField)FormViewInventario.FindControl("HiddenFieldCodigoIngrediente")).Value = ((DropDownList)sender).SelectedValue;
        InventarioNegocio inventarioNegocio = new InventarioNegocio();
        List<Libreria.SIG.Modelo.Inventario> inventarios = inventarioNegocio.consultarInventariosPorIngrediente(Int32.Parse(((DropDownList)FormViewInventario.FindControl("DropDownListIngredientes")).SelectedValue.ToString()), Session["CadenaDeConexion"].ToString());
        ((Label)FormViewInventario.FindControl("LabelExistencia")).Text = "0";
        ((TextBox)FormViewInventario.FindControl("CostoUnitarioTextBox")).Text = "0";
        if (((HiddenField)FormViewInventario.FindControl("HiddenFieldCodigoIngrediente")).Value != "0")
        {
            ((DropDownList)FormViewInventario.FindControl("DropDownListTiposMovimiento")).Enabled = true;
        }
        else
        { ((DropDownList)FormViewInventario.FindControl("DropDownListTiposMovimiento")).Enabled = false; 
        }
        int existencia = 0;
        foreach (Libreria.SIG.Modelo.Inventario inventario in inventarios)
        {
            if (inventario.TipoMovimiento == "E")
            {
                existencia += inventario.Cantidad.Value;
            }
            else
            {
                existencia -= inventario.Cantidad.Value;
            }
        }
        ((Label)FormViewInventario.FindControl("LabelExistencia")).Text = existencia.ToString();
   }

    protected void CantidadTextBox_TextChanged(object sender, EventArgs e)
    {

    }
    protected void FormViewInventario_PageIndexChanging(object sender, FormViewPageEventArgs e)
    {

    }

    protected void FormViewInventario_ItemInserted(object sender, FormViewInsertedEventArgs e)
    {
        limpiarFormulario();
    }

    protected void InsertCancelButton_Click(object sender, EventArgs e)
    {
        limpiarFormulario(); 
    }

    private void limpiarFormulario()
    {
        FormViewInventario.Controls.Clear();
        FormViewInventario.Visible = false;

    }

    protected void DropDownListTiposMovimiento_SelectedIndexChanged(object sender, EventArgs e)
    {
        ((Label)FormViewInventario.FindControl("LabelCtrlInventario")).Visible = true;
        ((Label)FormViewInventario.FindControl("LabelControlInventario")).Visible = true; 
        ((Label)FormViewInventario.FindControl("LabelCostoUnitario")).Visible = true;
        ((Label)FormViewInventario.FindControl("LabelCostoTotal")).Visible = true;
        ((TextBox)FormViewInventario.FindControl("CostoUnitarioTextBox")).Visible = true;
        ((TextBox)FormViewInventario.FindControl("CostoTotalTextBox")).Visible = true;

        Int32 existencia;
        try { existencia = Int32.Parse(((Label)FormViewInventario.FindControl("LabelExistencia")).Text); }
        catch (Exception ex) { existencia = 0; } 
        Int32 cantidad = Int32.Parse(string.Concat("0",((TextBox)FormViewInventario.FindControl("CantidadTextBox")).Text));
        IngredienteNegocio ingredienteNegocio = new IngredienteNegocio();
        Libreria.SIG.Modelo.Ingrediente ingrediente = ingredienteNegocio.consultarIngrediente(Int32.Parse(((DropDownList)FormViewInventario.FindControl("DropDownListIngredientes")).SelectedValue.ToString()), Session["CadenaDeConexion"].ToString());
        ((Label)FormViewInventario.FindControl("LabelControlInventario")).ForeColor = System.Drawing.Color.DarkGreen;
        ((Label)FormViewInventario.FindControl("LabelControlInventario")).Text = string.Concat("El nivel de inventario para este ingrediente quedaría al ", (cantidad*100/ingrediente.CantidadMaxima) ,"% de la cantidad máxima.");
        if (((DropDownList)sender).SelectedValue == "E")
        {
            if ((existencia + cantidad) > ingrediente.CantidadMaxima)
            {
                ((Label)FormViewInventario.FindControl("LabelControlInventario")).Text = "El nivel de inventario para este ingrediente supera la cantidad máxima.";
                ((Label)FormViewInventario.FindControl("LabelControlInventario")).ForeColor = System.Drawing.Color.DarkRed;
            }
            ((CompareValidator)FormViewInventario.FindControl("CompareValidatorCantidad")).ValueToCompare = "0";
            ((CompareValidator)FormViewInventario.FindControl("CompareValidatorCantidad")).Operator = ValidationCompareOperator.GreaterThan;
        }

        if (((DropDownList)sender).SelectedValue == "S")
        {
            ((Label)FormViewInventario.FindControl("LabelCostoUnitario")).Visible = false;
            ((Label)FormViewInventario.FindControl("LabelCostoTotal")).Visible = false;
            ((TextBox)FormViewInventario.FindControl("CostoUnitarioTextBox")).Visible = false;
            ((TextBox)FormViewInventario.FindControl("CostoTotalTextBox")).Visible = false;
            if ((existencia - cantidad) < ingrediente.CantidadMinima)
            {
                ((Label)FormViewInventario.FindControl("LabelControlInventario")).Text = "El nivel de inventario para este ingrediente es inferior a la cantidad mínima.";
                ((Label)FormViewInventario.FindControl("LabelControlInventario")).ForeColor = System.Drawing.Color.DarkRed;
            }
            if (cantidad > existencia)
            {
                ((Label)FormViewInventario.FindControl("LabelControlInventario")).Text = "La cantidad a sacar del ingrediente no puede ser mayor a la existencia.";
                ((Label)FormViewInventario.FindControl("LabelControlInventario")).ForeColor = System.Drawing.Color.DarkRed;
            }
            ((CompareValidator)FormViewInventario.FindControl("CompareValidatorCantidad")).ValueToCompare = existencia.ToString();
            ((CompareValidator)FormViewInventario.FindControl("CompareValidatorCantidad")).Operator = ValidationCompareOperator.LessThanEqual;
        }
    }
}
